Deploying software updates to computers or hosts in a fleet of computing systems is a common practice in order to maintain and upgrade software applications executing on the hosts. For instance, it may be necessary to periodically apply software updates to software executing on various hosts in order to implement security patches, bug fixes, or feature improvements. An update might install new software components, patch existing software components, remove software components from the host, and/or perform other tasks.
Some environments might include host fleets containing large numbers of heterogeneous hosts, which makes the deployment of updates to these hosts complicated. For example, some network-based services that allow customers to purchase and utilize instances of computing resources like virtual machine instances might utilize a host fleet containing hundreds of thousands or even millions of hosts. Each of these server computers may have its own configuration of hardware and installed software. Consequently, there may be tens or even hundreds of thousands of unique combinations of hardware and software components in such a host fleet.
Due to the commonly high heterogeneity of these host fleets, the impact of deploying an update to hosts in such a host fleet might be highly unpredictable. Problems caused by an update might not be discovered until the deployment of the update to the host fleet causes a failure. As a result, it may be necessary to expend a significant amount of time and resources in order to roll back the deployment of the update from the hosts.
The disclosure made herein is presented with respect to these and other considerations.